There are many tools to help a software developer produce code. One standard tool is an integrated development environment (IDE), which provides the programmer with a programming environment. Typically, the IDE includes an editor for writing code, a compiler or an interpreter, a code search engine, tools for tracing the operation of the code, tools for selecting defined programming objects used in the code, tools for selecting files, and the like. IDEs may also include tools for searching source code, as programmers developing and maintaining a software system often perform searches of source code. IDEs that are used for developing object-oriented software may also include a class browser, an object inspector, and a class hierarchy diagram.
One example of an IDE that may be used to develop object-oriented software is Eclipse. Eclipse is an open source Java IDE and provides a platform-independent software framework and a set of services for building a development environment from plug-in components. Eclipse includes a standard set of plug-ins, including the Java Development Tools (JDT) and the Plug-in Development Environment (PDE), that enable developers to extend Eclipse and build tools that can be integrated seamlessly with the Eclipse environment. In Eclipse, an IDE project is represented and defined by a collection of project files and project information.
Version control systems (VCSs) are commonly used in today's software development environments. A VCS tracks differences in source code files as well as other file-oriented metrics resulting from multi-user editing of the same source code file. Further, the modern VCS permits access to any of a family of versions of the same source code file. The modern VCS accepts, by way of example, requests to access a version of a source code file that is common to two different users, a merged version of two different versions of a source code file produced by two different users, a latest or newer version of a source code file, an older ancestral version of a source code file that is common to two different users, and the like.